package com.qing.design.patterns.chain_of_responsibility.example.middleware;

/**
 * 基础验证接口
 */
public abstract class Middleware {

	private Middleware next;

	/**
	 * 构建中间件对象链。
	 * @param next
	 * @return
	 */
	public Middleware linkWith(Middleware next){
		this.next=next;
		return  next;
	}

	/**
	 * 子类将通过具体的检查来实现此方法。
	 * @param email
	 * @param password
	 * @return
	 */
	public abstract boolean check(String email,String password);


	/**
	 * 如果我们在遍历下一个对象，请在链中运行链中的最后一个对象。
	 * @param email
	 * @param password
	 * @return
	 */
	protected boolean checkNext(String email,String password){
		if(next==null){
			return  true;
		}
		return  next.check(email,password);
	}


}
